package com.hurl.waguji.web.cx;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;
import java.util.Locale;


import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;

/**
 * 格式化数字输出
 * @author hurl
 *
 */
public class FormatNumberMethod implements TemplateMethodModel {

	@Override
	public Object exec(List list) throws TemplateModelException {
		if(list==null || list.size()<1)
			throw new TemplateModelException("缺少参数！");
		DecimalFormat df = (DecimalFormat)NumberFormat.getInstance(Locale.CHINESE);
		if(list.size()>1){
			df.applyPattern((String)list.get(1));
		}
		if(list.get(0)==null || String.valueOf(list.get(0)).equals("")){
			return "";
		}
		return df.format(toNumber((String)list.get(0)));
	}
	/**
	 * 将数字的字符串类型转换为数字类型。
	 * 有些时候字符串可能会是格式化过的类型。
	 * @param num
	 * @return
	 */
	public Double toNumber(String num){
		if(num==null || num.equals("")){
			return null;
		}
		if(num.contains(",")){
			num = num.replaceAll(",", "");
		}
		return Double.valueOf(num);
	}
}
